package com.lypeer.fcpermission.ui; import android.content.DialogInterface; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.v4.app.Fragment; import android.text.TextUtils; import com.lypeer.fcpermission.FcPermissions; import com.lypeer.fcpermission.R; import com.lypeer.fcpermission.impl.FcPermissionsCallbacks; import java.util.List; /** * Created by lypeer on 16/9/1. */ public abstract class FcPermissionsFragment extends Fragment implements FcPermissionsCallbacks { private DialogInterface.OnClickListener mOnClickListener; @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); FcPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } protected void requestPermissions(final Object object, String rationale, final int requestCode, final String... perms) { requestPermissions(object, rationale, android.R.string.ok, android.R.string.cancel, requestCode, perms); } protected void requestPermissions(final Object object, String rationale, @StringRes int positiveButton, @StringRes int negativeButton, final int requestCode, final String... perms) { FcPermissions.requestPermissions(object, rationale, positiveButton, negativeButton, requestCode, perms); } @NonNull protected abstract String getRationale4NeverAskAgain(); public void getNegativeButtonOnClickListener(DialogInterface.OnClickListener listener) { mOnClickListener = listener; } @Override public void onPermissionsDenied(int requestCode, List<String> perms) { if(TextUtils.isEmpty(getRationale4NeverAskAgain())){ throw new IllegalArgumentException("Rationale can not be empty ."); } FcPermissions.checkDeniedPermissionsNeverAskAgain(this, getRationale4NeverAskAgain(), R.string.setting, android.R.string.cancel, mOnClickListener, perms); onPermissionDenied(requestCode , perms); } public abstract void onPermissionDenied(int requestCode, List<String> perms); }